package InterfacesDeVencimientoDeReservas;

import java.util.ArrayList;
import java.util.Iterator;

import lider.Asiento;
import lider.GestionadorOceanic;
import lider.ListaSobreReserva;

import com.oceanic.AerolineaOceanic;

public class InterfazDeVencimientoDeReservasOceanic {
		
	public void enviarAsientoConReservaExpirada (Asiento asiento) {
				
		// variables ------------------------------------------------------------
		
		// busco si el asiento tiene una lista de sobre reservas
			ListaSobreReserva sobreReservasParaElAsiento = this.buscarListaSobreReserva(asiento);
		
		// codigo ---------------------------------------------------------------
		
		// si la tiene remuevo el primer dni que haya sobrereservado y
		// realizo una nueva reserva
		if (sobreReservasParaElAsiento != null){
			String dni = sobreReservasParaElAsiento.devolverPrimerSobreReserva();
			AerolineaOceanic aerolineaOceanic = AerolineaOceanic.getInstance();
			aerolineaOceanic.reservar(dni, asiento.getCodigoDeVuelo(), Integer.parseInt(asiento.getCodigoDeAsiento()));
			sobreReservasParaElAsiento.removerLaPrimerSobreReserva();
		}
		
	}

	private ListaSobreReserva buscarListaSobreReserva(Asiento asiento) {
		
		// variables --------------------------------------------------------------------------
		GestionadorOceanic gestionadorOceanic = GestionadorOceanic.getInstance();
		ListaSobreReserva listaADevolver = null;
		boolean encontrado = false;
		// codigo -----------------------------------------------------------------------------
		
		// busco la lista de sobre reservas correspondiente al asiento
		ArrayList<ListaSobreReserva> listaSobreReservaOceanic = gestionadorOceanic.getListaSobreReservas();
		for (Iterator<ListaSobreReserva> iterator = listaSobreReservaOceanic.iterator(); (iterator.hasNext()) && (encontrado == false);) {
			listaADevolver = (ListaSobreReserva) iterator.next();
			if (listaADevolver.getAsiento().equals(asiento)) {
				encontrado = true;
			}
		}
		
		return listaADevolver;
	}
	
}
